package service.impl;

import entity.User;
import service.GenerateMathService;
import util.JudgeUserUtil;

/** GenerateFactory 多态工厂 根据传入的 User 返回对应工厂单例 */
public class GenerateFactory {
  /**
   * generateMath 数学试卷生成工厂函数
   *
   * @param user 具体用户
   * @return GenerateMathService
   */
  public static GenerateMathService generateMath(User user) {
    if (JudgeUserUtil.isPrimary(user.getRole())) {
      return new PrimaryGenerateImpl(user);
    }
    if (JudgeUserUtil.isJunior(user.getRole())) {
      return new JuniorGenerateImpl(user);
    }
    return new HighGenerateImpl(user);
  }
}
